/**************************************************************************************
*
*	Copyright (C) 2010 - 2012 Brent Andrew O. Chua - See LICENSE.txt for more info.
*		
*	Filename	-	MaterialElementInfo.h
*
*	Description -	Wrapper class to wrap all info of material element source.
*
*	Comments	-
*
*	Modification History:
*			Name			   Date					Description
*			MrCodeSushi	-	09/27/2012	-	Creation of this file
**************************************************************************************/
#ifndef _PSX_MATERIAL_ELEMENT_INFO_H_
#define _PSX_MATERIAL_ELEMENT_INFO_H_

#include "PulseSTD.h"
#include "GraphicsTypes.h"
#include "MaterialElementRequirement.h"
#include "MaterialElementEntry.h"
#include "XMLParser.h"

namespace Pulse
{
	class MaterialElementInfo
	{
	public:

		static const CHAR * GetElementName( EParameter::Type type );

		static EParameter::Type GetElementType( const CHAR *pType );

		// NOTE: This method returns EErrorCode::OKAY if succesful. 
		//	pRequirement's type is also set to UNKNOWN if failed to retrive info.
		static EErrorCode::Type GetRequirementElement( XMLElementPtr pElem, MaterialElementRequirement *pRequirement );
	
		// NOTE: Used in parsing material files.
		static EErrorCode::Type GetEntryElement( XMLElementPtr pElem, MaterialElementEntry *pEntry );
	
	private:

	};

}

#endif/* _PSX_MATERIAL_ELEMENT_INFO_H_ */